Add simple program to create GPSBabelGUI.res from Delphi options file (.dof).
authoroliskoli <oliskoli@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 26 Apr 2006 12:38:10 +0000 (12:38 +0000)
committeroliskoli <oliskoli@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Wed, 26 Apr 2006 12:38:10 +0000 (12:38 +0000)
gpsbabel/win32/gui-2/dof2rc.dpr [new file with mode: 0644]

diff --git a/gpsbabel/win32/gui-2/dof2rc.dpr b/gpsbabel/win32/gui-2/dof2rc.dpr
new file mode 100644 (file)
index 0000000..feb557c
--- /dev/null
@@ -0,0 +1,108 @@
+program DOF2RC;\r
+uses\r
+  Windows, SysUtils, Inifiles;\r
+\r
+var\r
+  Ini: TInifile;\r
+  IFName: string;\r
+  OFName: string;\r
+  OFile: Text;\r
+  s: string;\r
+  i: Integer;\r
+\r
+  procedure WriteValue(const Key: string);\r
+  var\r
+    s: string;\r
+  begin\r
+    s := Ini.ReadString('Version Info Keys', Key, '');\r
+    WriteLn(OFile, #9#9'VALUE "', Key, '", "', s, '\0"');\r
+  end;\r
+\r
+begin\r
+  IFName := ChangeFileExt(ExpandFileName(ParamStr(1)), '.dof');\r
+  Ini := TIniFile.Create(IFName);\r
+  try\r
+    OFName := SysUtils.ChangeFileExt(Ini.FileName, '.rc');\r
+    if not Ini.SectionExists('Compiler') then\r
+    begin\r
+      WriteLn('Invalid DOF!');\r
+      Halt(1);\r
+    end;\r
+\r
+    System.Assign(OFile, OFName);\r
+{$I-}\r
+    System.Rewrite(OFile);\r
+{$I+}\r
+    if (IOResult <> 0) then\r
+    begin\r
+      Halt(1);\r
+    end;\r
+    try\r
+      s := SysUtils.ExtractFileName(Ini.FileName);\r
+      s := SysUtils.ChangeFileExt(s, '.ico');\r
+\r
+      System.WriteLn(OFile, 'MAINICON ICON "', s, '"');\r
+      System.WriteLn(OFile);\r
+\r
+      if not Ini.SectionExists('Version Info') then Exit;\r
+\r
+      WriteLn(OFile, '1 VERSIONINFO');\r
+      s := Ini.ReadString('Version Info', 'MajorVer', '0') + ',' +\r
+           Ini.ReadString('Version Info', 'MinorVer', '0') + ',' +\r
+           Ini.ReadString('Version Info', 'Release', '0') + ',' +\r
+           Ini.ReadString('Version Info', 'Build', '0');\r
+      WriteLn(OFile, 'FILEVERSION ', s);\r
+      WriteLn(OFile, 'PRODUCTVERSION ', s);\r
+      WriteLn(OFile, 'FILEOS 0x4');\r
+      WriteLn(OFile, 'FILETYPE 0x1');\r
+      WriteLn(OFile, 'FILESUBTYPE 0x0L');\r
+      WriteLn(OFile, 'FILEFLAGSMASK 0x3fL');\r
+\r
+      i := 0;\r
+      if (Ini.ReadInteger('Version Info', 'Debug', 0) <> 0) then i := 1;\r
+      if (Ini.ReadInteger('Version Info', 'PreRelease', 0) <> 0) then i := (i or 2);\r
+      if (Ini.ReadInteger('Version Info', 'Special', 0) <> 0) then i := (i or $20);\r
+      if (Ini.ReadInteger('Version Info', 'Private', 0) <> 0) then i := (i or 8);\r
+      if (i <> 0) then\r
+        WriteLn(OFile, 'FILEFLAGS ', SysUtils.Format('0x%2.2x', [i]));\r
+\r
+      WriteLn(OFile, '{');\r
+      WriteLn(OFile, 'BLOCK "StringFileInfo"');\r
+      WriteLn(OFile, '{');\r
+\r
+      if ini.SectionExists('Version Info Keys') then\r
+      begin\r
+        WriteLn(OFile, #9'BLOCK "040904E4"');\r
+       WriteLn(OFile, #9'{');\r
+        WriteValue('CompanyName');\r
+        WriteValue('FileDescription');\r
+        WriteValue('FileVersion');\r
+        WriteValue('InternalName');\r
+        WriteValue('LegalCopyright');\r
+        WriteValue('LegalTrademarks');\r
+        WriteValue('OriginalFilename');\r
+        WriteValue('ProductName');\r
+        WriteValue('ProductVersion');\r
+        WriteValue('Comments');\r
+       WriteLn(OFile, #9'}');\r
+      end;\r
+      WriteLn(OFile, '}');\r
+\r
+      WriteLn(OFile, 'BLOCK "VarFileInfo"');\r
+      WriteLn(OFile, '{');\r
+      WriteLn(OFile, #9'VALUE "Translation", ',\r
+        SysUtils.Format('0x%4.4x 0x%4.4x', [\r
+          Ini.ReadInteger('Version Info', 'Locale', 1033),\r
+          Ini.ReadInteger('Version Info', 'CodePage', 1252)]));\r
+      WriteLn(OFile, '}');\r
+      WriteLn(OFile, '}');\r
+\r
+\r
+    finally\r
+      System.Close(OFile);\r
+    end;\r
+  finally\r
+    ini.Free;\r
+  end;\r
+end.\r
+\r